Defines a pin-jointed 3D bar with three translations per node. The local transverse axes are arbitrary; only the longitudinal direction influences axial strain and stiffness.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| real(kind=real64), | public | :: | area |
The element cross-sectional area. |
|||
| type(material), | public | :: | material |
The material. |
|||
| type(node), | public | :: | node_1 |
The node at natural coordinate s = -1. |
|||
| type(node), | public | :: | node_2 |
The node at natural coordinate s = 1. |
Initializes a [[truss_element_3d]].
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(material), | intent(in) | :: | mat |
The elastic material and density. |
||
| real(kind=real64), | intent(in) | :: | area |
The cross-sectional area. |
||
| class(node), | intent(in) | :: | nd1 |
The first and second truss nodes. |
||
| class(node), | intent(in) | :: | nd2 |
The first and second truss nodes. |
The initialized spatial truss element.
Maps axial strain to axial force (E A times strain).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(truss_element_3d), | intent(in) | :: | this |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(truss_element_3d), | intent(in) | :: | this | |||
| integer(kind=int32), | intent(in) | :: | i | |||
| real(kind=real64), | intent(in), | dimension(:) | :: | s |
Computes the external force vector for the element.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(line_element), | intent(in) | :: | this |
The line_element object. |
||
| real(kind=real64), | intent(in), | dimension(:) | :: | q |
The surface traction or body-force vector. |
|
| integer(kind=int32), | intent(in), | optional | :: | rule |
The optional numerical integration rule. |
The resulting vector.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(truss_element_3d), | intent(in) | :: | this |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(truss_element_3d), | intent(in) | :: | this |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(truss_element_3d), | intent(in) | :: | this | |||
| integer(kind=int32), | intent(in) | :: | i |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(truss_element_3d), | intent(in) | :: | this |
Returns the natural coordinate of a terminal node.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(line_element), | intent(in) | :: | this |
The line_element object. |
||
| integer(kind=int32), | intent(in) | :: | i |
The local node index. |
The natural coordinate of the node.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(truss_element_3d), | intent(in) | :: | this | |||
| integer(kind=int32), | intent(out) | :: | i1 | |||
| integer(kind=int32), | intent(out) | :: | i2 |
The natural-to-physical coordinate Jacobian is L/2.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(truss_element_3d), | intent(in) | :: | this | |||
| real(kind=real64), | intent(in), | dimension(:) | :: | s |
Computes the length of the line_element.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(line_element), | intent(in) | :: | this |
The line_element object. |
The length of the line element.
Computes the mass matrix for the element.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(line_element), | intent(in) | :: | this |
The line_element object. |
||
| integer(kind=int32), | intent(in), | optional | :: | rule |
The optional numerical integration rule. |
The resulting matrix.
Returns a local-to-global orthonormal basis with the first axis along the bar. Transverse axes do not affect its axial stiffness.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(truss_element_3d), | intent(in) | :: | this |
Computes the three-component linear displacement interpolation matrix.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(truss_element_3d), | intent(in) | :: | this | |||
| real(kind=real64), | intent(in), | dimension(:) | :: | s |
Global axial stiffness K = (E A/L) b b^T, where b = [-n, n].
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(truss_element_3d), | intent(in) | :: | this |
The spatial truss element. |
||
| integer(kind=int32), | intent(in), | optional | :: | rule |
The integration rule is accepted for compatibility; stiffness is exact. |
The 6-by-6 global translational stiffness matrix.
Computes the line-element strain from global element displacements at the specified natural coordinate.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(line_element), | intent(in) | :: | this |
The line_element object. |
||
| real(kind=real64), | intent(in), | dimension(:) | :: | displacement |
The element displacement vector in the global coordinate system. |
|
| real(kind=real64), | intent(in), | dimension(:) | :: | s |
The natural coordinates at which to evaluate the strain. |
The resulting strain vector in the element coordinate system.
Local axial strain is (u_2 - u_1) / L.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(truss_element_3d), | intent(in) | :: | this | |||
| real(kind=real64), | intent(in), | dimension(:) | :: | s |
Computes the line-element stress result from global element displacements at the specified natural coordinate.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(line_element), | intent(in) | :: | this |
The line_element object. |
||
| real(kind=real64), | intent(in), | dimension(:) | :: | displacement |
The element displacement vector in the global coordinate system. |
|
| real(kind=real64), | intent(in), | dimension(:) | :: | s |
The natural coordinates at which to evaluate the stress. |
The resulting stress vector in the element coordinate system.